package jscinttools.scint;
import jhplot.PND;
import hep.aida.ITuple;
import hep.aida.ITree;
import hep.aida.IDataPointSet;

/**
 *  Interface for data file container
 *
 * @author     Marc-Antoine Verdier
 * @created    3 mars 2012
 */
public interface DataContainer {
	/**
	 *  Write the data in a PND
	 *
	 * @param  name  The name of the PND
	 * @return       The PND containing the data
	 */
	public PND toPND(String name);
	
	/**
	 *  Write the data in a PND
	 *
	 * @param  name  The name of the PND
	 * @param  skipCol  The array of column number to skip (i.e column which cannot be parsed as double)
	 * @return       The PND containing the data
	 */
	public PND toPND(String name, int[] skipCol);

	/**
	 *  Write the data in an ITuple
	 *
	 * @param  name  The name of the ITuple
	 * @return       The ITuple containing the data
	 */
	public ITuple toTuple(String name);

	/**
	 *  Write the data in an ITuple sotred in a in an ITree
	 *
	 * @param  path  The path in the ITree
	 * @param  name  The name of the ITuple
	 * @param  tree  The ITree to store the ITuple
	 * @return       The ITuple containing the data
	 */
	public ITuple toTuple(String path, String name, ITree tree);

	/**
	 *  Write the data in an IDataPointSet
	 *
	 * @param  name  The name of the IDataPointSet
	 * @return       The IDataPointSet containing the data
	 */
	public IDataPointSet toDPS(String name);

	/**
	 *  Write the data in an IDataPointSet sotred in a in an ITree
	 *
	 * @param  path  The path in the ITree
	 * @param  name  The name of the IDataPointSet
	 * @param  tree  The ITree to store the IDataPointSet
	 * @return       The IDataPointSet containing the data
	 */
	public IDataPointSet toDPS(String path, String name, ITree tree);

	/**
	 *  Write the data in an an array of String
	 *
	 * @return       The array containing the data
	 */
	public String[][] arrayString();
	
	/**
	 *  The number of columns
	 *
	 * @return       The number of columns
	 */
	public int columns();
	
	/**
	 *  The number of rows
	 *
	 * @return       The number of rows
	 */
	public int size();
	
	/**
	 *  Gives the comments
	 *
	 * @return       The comment lines
	 */
	public String[] comments();
}
